package com.gbas.mus.model;

import com.gbas.mus.model.lances.*;

public class FaseChicas extends Fase {
    public FaseChicas(Ronda ronda) {
        super(ronda);

        getJugarMus().accionMesa(Accion.MENSAJE_TEXTO, "Comienza fase Chicas");
        turnoAMano(OP_INPUT.APUESTA);
    }

    public boolean lanceValido(Lance lance) {
        return esLanceDeJuego(lance);
    }

    public void doLance(Lance lance) {
        if (lance instanceof LanceAceptoOrdago) {
            getJugarMus().accionMesa(Accion.MENSAJE_TEXTO, lance.getJugador().getNombre()+ " acepta el Ordago a Chicas");
            ronda.nuevaFase(new FaseConteo(ronda, true));
        } else if (lance instanceof LanceOrdago) {
            getJugarMus().accionMesa(Accion.MENSAJE_TEXTO, lance.getJugador().getNombre()+ " se juega un Ordago a Chicas");
            turnoASiguientePareja(lance.getJugador(), OP_INPUT.RESPUESTA_ORDAGO);
        } else if (lance instanceof LancePaso) {
            getJugarMus().accionMesa(Accion.MENSAJE_TEXTO, lance.getJugador().getNombre()+ " pasa");
            turnoPara.remove(lance.getJugador());
            if (turnoPara.size() == 0) {
                if (hayNoPasos()) {
                    if (sumaPuntosPorJinete()) {
                        ronda.nuevaFase(new FaseConteo(ronda));
                    } else {
                        nextFase();
                    }
                } else {
                    // Solo son pasos, si son 4, se pasa
                    if (lances.size() == 4) {
                        getJugarMus().accionMesa(Accion.MENSAJE_TEXTO, "se fu�");
                        nextFase();
                    } else {
                        turnoASiguienteJugador(lance.getJugador(), OP_INPUT.APUESTA);
                    }
                }
            }
        } else if (lance instanceof LanceEnvido) {
            getJugarMus().accionMesa(Accion.MENSAJE_TEXTO, lance.getJugador().getNombre()+ " envida 2");
            turnoASiguientePareja(lance.getJugador(), OP_INPUT.RESPUESTA);
        } else if (lance instanceof LanceVer) {
            getJugarMus().accionMesa(Accion.MENSAJE_TEXTO, lance.getJugador().getNombre()+ " las ve");
            nextFase();
        }
    }

    void nextFase() {
        final FasePar par = new FasePar(ronda);
        ronda.nuevaFase(par);
        if (par.turnoPara.size()==0)
            par.nextFase();

    }

    public String getNombre() {
        return "Chicas";
    }

}
